const mongoose = require("../utils/mongoose.js");
//对插入的字段进行规范和限制

//建表
//type定义类型 required 是否必传
let schema = mongoose.Schema({
  username: { type: String, required: true },
  password: { type: String, required: true },
  sex: { type: Number, required: false, default: 0 },
  nickname: { type: String, required: false },
  phoneNumber: { type: String, required: false },
  email: { type: String, required: false },
});

//创建集合(如果没有会自动创建,如果有会自动连接)
//这个步骤 mongoose会自动给我们的集合名字加上s 容易造成查询错误 所以我们在创建名字的时候 自己主动加s
let Collection = mongoose.model("users", schema);

//增 c(比较特殊,需要实例化)
/**
 *
 * @param {Object} params 注册的用户信息参数
 */
function add(params) {
  let db = new Collection(params);
  // 调用方法存到数据库,mongoose中所有的方法都支持Promise
  return db
    .save()
    .then((res) => ({ state: true, res }))
    .catch((err) => ({ state: false, errMsg: err.toString() }));
}
/**
 *
 * @param {Object} query 查询数据库的条件
 * @returns {Promise} 返回一个promise
 */
const find = (query) =>
  Collection.find(query)
    .then((res) => ({ state: true, res }))
    .catch((err) => ({ state: false, errMsg: err.toString() }));

module.exports = {
  add,
  find,
};
